package Q17_07_Baby_Names; import java.util.ArrayList; import java.util.HashMap; public class Graph { private ArrayList<GraphNode> nodes; private HashMap<String, GraphNode> map; public Graph() { map = new HashMap<String, GraphNode>(); nodes = new ArrayList<GraphNode>(); } public boolean hasNode(String name) { return map.containsKey(name); } public GraphNode createNode(String name, int freq) { if (map.containsKey(name)) { return getNode(name); } GraphNode node = new GraphNode(name, freq); nodes.add(node); map.put(name, node); return node; } private GraphNode getNode(String name) { return map.get(name); } public ArrayList<GraphNode> getNodes() { return nodes; } public void addEdge(String startName, String endName) { GraphNode start = getNode(startName); GraphNode end = getNode(endName); if (start != null && end != null) { start.addNeighbor(end); end.addNeighbor(start); } } }